package essential.ch3;

/**
 * @Date 2021/10/23
 * @Created by Jonathan
 */
public class BoxTest {
    public static void main(String[] args) {
        Box b1 = new Box(1);
        Box b2 = new Box(1);
        Box b3 = new Box(1);
        // 对于任何非null的引用值x，x.equals(x)应返回true。
        System.out.printf("自反性:%s", b1.equals(b1));

        // 对于任何非null的引用值x与y，当且仅当：y.equals(x)返回true时，x.equals(y)才应返回true。
        System.out.print("\n对称性:");
        System.out.printf("%s ", b1.equals(b2));
        System.out.printf("%s ", b2.equals(b1));

        // 对于任何非null的引用值x、y与z，如果x.equals(y)返回true，
        // 并且y.equals(z)返回true，那么x.equals(z)也应返回true。
        System.out.print("\n传递性:");
        System.out.printf("%s ", b1.equals(b2));
        System.out.printf("%s ", b2.equals(b3));
        System.out.printf("%s ", b1.equals(b3));

        // 一致性
        // 对于任何非空引用值x与y，假设对象上equals比较中的信息没有被修改，
        // 则多次调用x.equals(y)始终返回true或始终返回false。

        // 与null比较
        System.out.printf("\n与null比较: %s", b1.equals(null));

    }
}
